const Common = require('./common');
const UserModel = require ('../models/user');
const Constant = require('../constant/constant');
// const dateFormat = require('dateformat'); 
const Token = require("../utils/token");

//配置对象
let exportObj = {
    modifyUserInfo,
    logOut,
};

module.exports = exportObj;

function modifyUserInfo(req,res){
    //修改用户信息
    const resObj = Common.clone(Constant.DEFAULT_SUCCESS); //定义一个返回对象
    //定义一个async任务
    let tasks = {
        //校验参数方法
        checkParams:(cb)=>{
            //调用公共方法中的校验参数方法，如果成功，则继续后面的操作
            //如果失败，则传递错误信息到async的最终方法
            Common.checkParams(req.body,['phoneNo','theme'],cb);
        },
        //修改方法，依赖校验参数方法
        update:['checkParams',(results,cb)=>{
            console.log(req.body.phoneNo)
            console.log(req.body.theme)
            UserModel.update({
                theme:req.body.theme,
            },{
                where:{
                    phone:req.body.phoneNo,
                }
            }).then(function(result){
                //更新结果处理
                if (result[0]){
                    //更新成功
                    cb(null); //继续后续操作
                }
                else {
                    //更新失败
                    cb(Constant.DEFAULT_ERROR)
                }
            }).catch(e=>{
                console.log(e);
                cb(Constant.DEFAULT_ERROR)
            })
        }],
        //查询新的用户信息返回给前端
        query:['update',(result,cb)=>{
            UserModel.findOne({
                where:{phone:req.body.phoneNo}
            }).then(function(result){
                if (result){
                    console.log(result.dataValues,'result');
                    resObj.result={
                        phoneNo:result.dataValues.phone,
                        theme:result.dataValues.theme,
                        nickname:result.dataValues.nick_name,
                        level:result.dataValues.level,
                        gender:result.dataValues.gender,
                        email:result.dataValues.email,
                    }
                    cb(null);
                }else{
                    cb(Constant.DEFAULT_ERROR);
                }
                
            }).catch((err)=>{
                console.log(err);
                cb(Constant.DEFAULT_ERROR)
            })
        }]
    }
    Common.autoFn(tasks,res,resObj); //执行公共方法中的autoFn方法，返回数据
}

function logOut(req,res){
    //退出登录
    const resObj = Common.clone(Constant.DEFAULT_SUCCESS); //定义一个返回对象
    //定义一个async任务
    let tasks = {
        //解析token
        checkToken:(cb)=>{
            let token=req.cookies['Admin-Token'];
            let tokenVerifyResult = Token.decrypt(token);
            if (tokenVerifyResult.token){
                cb(null,tokenVerifyResult)
            } else {
                cb(Constant.DEFAULT_ERROR)
            }
        }

    }
    Common.autoFn(tasks,res,resObj); //执行公共方法中的autoFn方法，返回数据
}